pub fn dp_rec_mc(amount: u32) -> u32 {
    let n = amount as i32;
    let coins = vec![1, 2, 5, 10, 20, 30, 50, 100];
    let mut dp:Vec<i32> = Vec::new();
    for _i in 0..n+1
    {
        dp.push(100000000);
    }
    dp[0]=0;
    for &coin in &coins 
    {
        for j in coin..=n
        {
            if dp[(j - coin)as usize] != 100000000 && dp[(j - coin)as usize] + 1 < dp[j as usize] 
            {
                dp[j as usize] = dp[(j - coin)as usize] + 1;
            }
        }
    }
    return dp[n as usize] as u32;
}
